iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
Mobile Development

Spring Boot & Android Studio教學系列 第 17

保護您的 Spring 應用程序:Spring Security 逐步指南

  • 分享至 

  • xImage
  •  

Spring Security(版本6.1.3)

Spring Boot Security 是 Spring 框架的一個模組,用於實現應用程序的安全性。它提供了一種簡單而強大的方式來保護您的應用程序免受未授權訪問、身份盗用、信息洩露等安全威脅。Spring Boot Security 建立在 Spring Security 基礎之上,並進一步簡化了配置和使用。

身份驗證(Authentication):

Spring Boot Security 支持多種身份驗證機制,包括基本身份驗證、表單身份驗證、OAuth2、JWT(JSON Web Tokens)等。

授權(Authorization):

Spring Boot Security 使您能夠定義細粒度的授權規則,確保只有具有適當權限的用戶可以訪問應用程序的特定部分或功能。

安全過濾器(Security Filters):

Spring Boot Security 通過使用安全過濾器來處理對請求的驗證和授權。這些過濾器可以按照特定的順序來定義,以實現多層次的安全性。
典型的過濾器包括身份驗證過濾器(Authentication Filter)和授權過濾器(Authorization Filter)。

自定義安全性:

您可以輕鬆擴展 Spring Boot Security,以滿足您的自定義需求。這可以包括自定義身份驗證提供者、自定義授權邏輯、自定義登錄頁面等。

安全事件和監聽:

您可以設置安全事件監聽器,以監視和響應安全事件,如登錄成功、登出等。

集成第三方安全性:

Spring Boot Security 能夠輕松集成第三方安全性機制,如 OAuth2 和 OpenID Connect,以實現單點登錄(Single Sign-On,SSO)和授權流程。

依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

簡單範例

創建一個SecurityConfig 配置檔

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.csrf(AbstractHttpConfigurer::disable)  //禁止CSRF(跨站請求偽造)保護。
                .authorizeHttpRequests((authorize) -> authorize //對所有訪問HTTP端點的HttpServletRequest進行限制
                        .requestMatchers(
                                "/error/**",
                                "/hello"
                        ).permitAll()   //指定上述匹配規則中的路徑,允許所有用戶訪問,即不需要進行身份驗證。
                        .anyRequest().authenticated()   //其他尚未匹配到的路徑都需要身份驗證
                );
        return http.build();
    }
}

以上程式碼禁用了 CSRF 保護,並定義了哪些請求需要身份驗證,哪些請求允許所有用戶訪問。這只是一個簡單的配置示例,我將 /error/** , /hello 設定為不須身份驗證就可以進行訪問,當我訪問專案中其他API路徑就會被Security擋住回傳403

/error 用於處理錯誤和異常情況
/error/** 表示與/error開頭匹配之路徑

訪問/hello API路徑

訪問其他API路徑


上一篇
解密Spring Boot中的異常處理
下一篇
掌握Spring Security:實現一個堅固的身份驗證與授權架構(EP1)
系列文
Spring Boot & Android Studio教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言